"""
@name : 高阶函数练习
@author : zhaosiyuan
@projectname: PythonProject
@time: 2022/7/29
"""
from functools import reduce
lst = ['a', '1', '2bb', '234', '', '9']
# # 使用reduce 取出lst里的数字 -- 12349
num = filter(lambda x: x.isdigit(), lst)
print(int(reduce(lambda x,y: x+y, num)))

# 以下列表，正数在前负数在后，整数从小到大，负数从大到小
list = [7, -8, 5, 4, 0, -2, -5]
print(sorted(list, key=lambda x: (x <= 0, abs(x))))

# 这是一个字符串排序，排序规则：小写<大写<奇数<偶数
# s = ‘asdf234GDSdsf23’ => 排序：小写-大写-奇数-偶数
# 原理：先比较元组的第一个值，FALSE
s = 'asdf234GDSdsf23'
print(sorted(s,key= lambda x: (x.isdigit(), x.isupper(),x.isdigit() and int(x)%2 ==0,x)))